'''

map函数
map() 是 Python 内置的高阶函数，用于对可迭代对象中的每个元素应用指定的函数，并返回一个新的可迭代对象。
map() 函数的语法如下：
map(function, iterable)
其中，function 是一个函数对象，iterable 是一个可迭代对象（例如列表、元组、集合等）。
map() 函数会对 iterable 中的每个元素调用 function 函数，并将返回值组成一个新的可迭代对象。
返回值的类型与 iterable 的类型相同。



filter(function, iterable)
filter() 是 Python 内置的高阶函数，用于过滤可迭代对象中的元素，返回一个新的可迭代对象。
filter() 函数的语法如下：
filter(function, iterable)
其中，function 是一个函数对象，iterable 是一个可迭代对象（例如列表、元组、集合等）。
filter() 函数会对 iterable 中的每个元素调用 function 函数，并将返回值为 True 的元素组成一个新的可迭代对象。
返回值的类型与 iterable 的类型相同。



reduce(function, iterable)
reduce() 是 Python 内置的高阶函数，用于对可迭代对象中的元素进行累积操作，返回一个单一的值。
reduce() 函数的语法如下：
reduce(function, iterable)
其中，function 是一个函数对象，iterable 是一个可迭代对象（例如列表、元组、集合等）。
reduce() 函数会对 iterable 中的元素进行累积操作，每次操作都会将前一次的结果和当前元素传递给 function 函数，并将返回值作为下一次操作的结果。
最终返回一个单一的值。


'''

import functools
from functools import reduce
import itertools


nums = [1, 2, 3, 4, 5]
squares = map(lambda x: x**2, nums)
print(squares)
for i in squares:
    print(i)

filtered = filter(lambda x: x % 2 == 0, nums)
print(filtered)
for i in filtered:
    print(i)


reduced = reduce(lambda x, y: x + y, nums)
print(reduced)


nums = [1, 2, 3, 4, 5]
squares = map(lambda x: x**2, nums)
print(squares)
print(list(squares)[-1])